<template>
	<div class="pay-main">
		<div class="pay-container">
			<div class="checkout-tit">
				<h4 class="tit-txt">
					<span class="success-icon"></span>
					<span class="success-info"
						>订单提交成功，请您及时付款，以便尽快为您发货~~</span
					>
				</h4>
				<div class="paymark">
					<span class="fl"
						>请您在提交订单<em class="orange time">4小时</em
						>之内完成支付，超时订单会自动取消。订单号：<em>{{
							orderId
						}}</em></span
					>
					<span class="fr"
						><em class="lead">应付金额：</em
						><em class="orange money">￥{{ payInfo.totalFee }}</em></span
					>
				</div>
			</div>
			<div class="checkout-info">
				<h4>重要说明：</h4>
				<ol>
					<li>
						尚品汇商城支付平台目前支持<span class="zfb">微信</span>支付方式。
					</li>
					<li>其它支付渠道正在调试中，敬请期待。</li>
					<li>为了保证您的购物支付流程顺利完成，请保存以下支付信息。</li>
				</ol>
				<h4>
					支付账户信息：（很重要，<span class="save">请保存！！！</span>）
				</h4>
				<ul>
					<li>支付帐号：11111111</li>
					<li>密码：111111</li>
					<li>支付密码：111111</li>
				</ul>
			</div>
			<div class="checkout-steps">
				<div class="step-tit">
					<h5>支付平台</h5>
				</div>
				<div class="step-cont">
					<ul class="payType">
						<li><img src="./images/pay2.jpg" /></li>
						<li><img src="./images/pay3.jpg" /></li>
					</ul>
				</div>
				<div class="hr"></div>

				<div class="payshipInfo">
					<div class="step-tit">
						<h5>支付网银</h5>
					</div>
					<div class="step-cont">
						<ul class="payType">
							<li><img src="./images/pay10.jpg" /></li>
							<li><img src="./images/pay11.jpg" /></li>
							<li><img src="./images/pay12.jpg" /></li>
							<li><img src="./images/pay13.jpg" /></li>
							<li><img src="./images/pay14.jpg" /></li>
							<li><img src="./images/pay15.jpg" /></li>
							<li><img src="./images/pay16.jpg" /></li>
							<li><img src="./images/pay17.jpg" /></li>
							<li><img src="./images/pay18.jpg" /></li>
							<li><img src="./images/pay19.jpg" /></li>
							<li><img src="./images/pay20.jpg" /></li>
							<li><img src="./images/pay21.jpg" /></li>
							<li><img src="./images/pay22.jpg" /></li>
						</ul>
					</div>
				</div>
				<div class="hr"></div>

				<div class="submit">
					<a class="btn" @click="openMessBox">立即支付</a>
				</div>
				<div class="otherpay">
					<div class="step-tit">
						<h5>其他支付方式</h5>
					</div>
					<div class="step-cont">
						<span><a href="weixinpay.html" target="_blank"> 微信支付 </a></span>
						<span> 中国银联 </span>
					</div>
				</div>
			</div>
		</div>
	</div>
</template>

<script>
import QRCode from "qrcode";

export default {
	name: "Pay",
	data() {
		return {
			payInfo: {},
			timer: null,
			statusCode: "",
		};
	},
	computed: {
		orderId() {
			return this.$route.query.orderId;
		},
	},
	methods: {
		// 获取订单支付信息
		async getPayInfo() {
			const res = await this.$api.getPayInfoAPI(this.orderId);
			if (res.code === 200) {
				this.payInfo = res.data;
			} else {
				alert(res.message);
			}
		},

		// 支付弹出层
		async openMessBox() {
			// 将二维码字符转换为图片地址
			let imgURL = await QRCode.toDataURL(this.payInfo.codeUrl);
			// Element弹出框配置
			this.$alert(`<img src=${imgURL}>`, "微信支付", {
				dangerouslyUseHTMLString: true,
				center: true,
				showClose: false, // 取消“x”按钮
				showCancelButton: true, // 显示关闭按钮
				cancelButtonText: "支付遇到问题",
				confirmButtonText: "已支付",
				closeOnClickModal: true, // 单击空白关闭

				// 控制弹出层的关闭行为，
				// 箭头函数！要不然这里的this指向会有问题
				beforeClose: (clickTarget, instance, done) => {
					// 如果单击"取消"
					if (clickTarget == "cancel") {
						clearInterval(this.timer);
						this.timer = null;
						done();
						alert("😶请联系管理员:ecat_zr");

						// 单击"已支付"
					} else {
						clearInterval(this.timer);
						this.timer = null;
						// 支付成功
						// if (this.code === 200) {
						this.$router.push("/paySuccess");
						// } else {
						// 	// 支付失败
						done();
						// }
					}
				},
			}).catch((e) => e);

			this.inspectCode();
		},

		// 发起请求，轮询支付状态
		inspectCode() {
			this.timer = setInterval(async () => {
				const res = await this.$api.getPayStatus(this.orderId);
				// 支付成功
				if (res.code === 200) {
					clearInterval(this.timer); // 清除定时器
					this.timer = null;
					this.statusCode = res.code;
					this.$msgbox.close(); // 关闭弹出层
					this.$router.push("/paySuccess"); // 进行路由跳转
				} else {
					// 保存最后一刻的状态码，为了单击时状态的判断
					this.statusCode = res.code;
				}
			}, 1000);
		},
	},

	created() {
		this.getPayInfo();
	},
};
</script>

<style lang="less" scoped>
.pay-main {
	margin-bottom: 20px;

	.pay-container {
		margin: 0 auto;
		width: 1200px;

		a:hover {
			color: #4cb9fc;
		}

		.orange {
			color: #e1251b;
		}

		.money {
			font-size: 18px;
		}

		.zfb {
			color: #e1251b;
			font-weight: 700;
		}

		.checkout-tit {
			padding: 10px;

			.tit-txt {
				font-size: 14px;
				line-height: 21px;

				.success-icon {
					width: 30px;
					height: 30px;
					display: inline-block;
					background: url(./images/icon.png) no-repeat 0 0;
				}

				.success-info {
					padding: 0 8px;
					line-height: 30px;
					vertical-align: top;
				}
			}

			.paymark {
				overflow: hidden;
				line-height: 26px;
				text-indent: 38px;

				.fl {
					float: left;
				}

				.fr {
					float: right;

					.lead {
						margin-bottom: 18px;
						font-size: 15px;
						font-weight: 400;
						line-height: 22.5px;
					}
				}
			}
		}

		.checkout-info {
			padding-left: 25px;
			padding-bottom: 15px;
			margin-bottom: 10px;
			border: 2px solid #e1251b;

			h4 {
				margin: 9px 0;
				font-size: 14px;
				line-height: 21px;
				color: #e1251b;
			}

			ol {
				padding-left: 25px;
				list-style-type: decimal;
				line-height: 24px;
				font-size: 14px;
			}

			ul {
				padding-left: 25px;
				list-style-type: disc;
				line-height: 24px;
				font-size: 14px;
			}
		}

		.checkout-steps {
			border: 1px solid #ddd;
			padding: 25px;

			.hr {
				height: 1px;
				background-color: #ddd;
			}

			.step-tit {
				line-height: 36px;
				margin: 15px 0;
			}

			.step-cont {
				margin: 0 10px 12px 20px;

				ul {
					font-size: 0;

					li {
						margin: 2px;
						display: inline-block;
						padding: 5px 20px;
						border: 1px solid #ddd;
						cursor: pointer;
						line-height: 18px;
					}
				}
			}
		}

		.submit {
			text-align: center;

			.btn {
				display: inline-block;
				padding: 15px 45px;
				margin: 15px 0 10px;
				font: 18px "微软雅黑";
				font-weight: 700;
				border-radius: 0;
				background-color: #e1251b;
				border: 1px solid #e1251b;
				color: #fff;
				text-align: center;
				vertical-align: middle;
				cursor: pointer;
				user-select: none;
				text-decoration: none;
			}
		}
	}
}
</style>
